package com.cskaoyan.controller.system;

import com.cskaoyan.bean.BasePageInfo;
import com.cskaoyan.bean.BaseRespVo;
import com.cskaoyan.bean.vo.system.*;
import com.cskaoyan.service.system.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.ParseException;
import java.util.Map;

/**
 * @auther zk
 * @date 2022/7/19 11:08
 */
@RestController
@RequestMapping("admin/admin")
public class AdminController {

    @Autowired
    AdminService adminService;

    /**
     * @auther zk
     * @description admin/admin/list 获取管理员列表
     * @param page:页数 limit:每页大小 sort:用于排序字的字段 order:排序规则 username:可选
     * @return 管理员信息分页列表
     */
    @RequestMapping("list")
    public BaseRespVo adminList(BasePageInfo info, String username) {
        AdminListVo adminListVo = adminService.adminList(info, username);
        return BaseRespVo.ok(adminListVo, "成功", 0);
    }

    /**
     * @auther zk
     * @description admin/admin/create 插入一条管理员信息，管理员名不能重复
     * @param 携带管理员信息的json
     * @return 新增的管理员的完整信息
     */
    @RequestMapping("create")
    public BaseRespVo adminCreate(@RequestBody Map map) {
        AdminInfo adminInfo = adminService.adminCreate(map);
        if (adminInfo == null) {
            return BaseRespVo.error(602, "该管理员已经存在");
        }
        return BaseRespVo.ok(adminInfo, "成功", 0);
    }

    /**
     * @auther zk
     * @description admin/admin/update 更新一条管理员信息，管理员名不能重复
     * @param 更新信息的json
     * @return 更新后的的管理员的完整信息
     */
    @RequestMapping("update")
    public BaseRespVo adminUpdate(@RequestBody Map map) throws ParseException {
        AdminInfo adminInfo = adminService.adminUpdate(map);
        if (adminInfo == null) {
            return BaseRespVo.error(602, "该管理员已经存在");
        }
        return BaseRespVo.ok(adminInfo, "成功", 0);
    }

    /**
     * @auther zk
     * @description admin/admin/delete 更新一条管理员信息，管理员名不能重复
     * @param 需要删除的管理员信息
     * @return 删除结果
     */
    @RequestMapping("delete")
    public BaseRespVo adminDelete(@RequestBody Map map) {
        Integer flag = adminService.adminDelete(map);
        if (flag == 1) {
            return BaseRespVo.ok(null, "失败", 0);
        }
        return BaseRespVo.ok(null, "成功", flag);
    }

}
